﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo2
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] romans =
            {
                "四亿八千五百○三万九千七百○六",
                "九万三千七百六十七",
                "七万一千○四十八",
                "五亿七千三百七十八万一千二百六十三",
                "九亿四千○八十四万四千五百七十七",
                "五亿二千一百九十九万二千七百一十二",
                "三万三千一百四十六",
                "五亿一千七百一十四万七千四百二十九",
                "五亿七千八百四十万○七百四十六",
                "五亿八千九百一十九万八千四百四十三",
                "九百九十六万二千一百四十二",
                "四亿五千三百九十二万○三百○六",
                "一十七万○七十一",
                "五亿四千一百九十八万六千二百九十八",
                "六亿九千九百一十九万○六百三十一",
                "一千六百六十八",
                "七亿三千六百六十二万八千八百○五",
                "四亿八千六百八十九万四千一百八十三",
                "一千二百七十三万○六百四十三",
            };
            foreach (var roman in romans)
            {
                Context context = new Context() { Input = roman };

                List<Expression> list = new List<Expression>()
                {
                    new ThousandExpression(), new HundredExpression(), new TenExpression(), new OneExpression()
                };

                foreach (var expression in list)
                {
                    expression.Interpret(context);
                }

                Console.WriteLine("{0}={1}",roman, context.Output);
            }
            
            Console.ReadLine();
        }
    }
}
